@L|}6CD l0C)HCC WhL/h `CmCDiD`  R@P1  Y0@R !L` D  C D     )16CS S)  C)D1 p p 0 C9DI pCDL~CiCDiD`10 ; SOURCE.049 LINES 40-10020 ; UNIVERSAL TOUCH TABLET PICTURE LOADER IN ONE MACHINE PROGRAM.30 *= $380040 ICBAL} = $034450 ICBAH = $034560 ICBLL = $034870 ICBLH = $034980 ICCOM = $034290 CIOV = $E4560100 SCN = $CB01}10 XHOLD = $CD0120 YHOLD = $CE0130 LSB = $CF0140 MSB = $D00150 CHAN = $D40160 TEMP = $D60170 COL = $D10180 DAT}A = $D50190 PLA 0200 PLA 0210 PLA 0220 TAX ;CHANNEL *160230 STA CHAN0240 LDA #70250 } STA ICCOM,X ;COMMAND BYTE0260 LDA #00270 STA ICBLH,X ;HI BYTE LENGTH0280 STA ICBAH,X ;HI OF PLACE TO DUMP D }ATA0290 STA XHOLD0300 STA YHOLD0310 LDA #80320 STA ICBLL,X ;SKIP FIRST 7 BYTES IN HEADER & PLACE 8th IN A }CCUM0330 LDA 88 ;LO OF SCREEN ADDRESS0340 STA SCN0350 LDA 890360 STA SCN+10370 LDA #$D7 ;SAF }E PLACE TO DISCARD HEADER DATA0380 STA ICBAL,X0390 LDA #390400 STA COL0410 JSR CIOV ;GET DATA WTIH 8th } (compression type) IN ACCUM.0420 STA TEMP0430 LDA #5 ;SKIP NEXT 5 DATA BYTES0440 STA ICBLL,X0450 JS }R CIOV0460 LDA #708/256 ;GET AND PLACE 5 COLOR REGISTER DATA0470 STA ICBAH,X0480 LDA #708&2550490 STA ICB}AL,X0500 JSR CIOV0510 LDA #$D70520 STA ICBAL,X ;RESET DUMP LOC.0530 LDA #00540 STA ICBAH,X ;HI BYTE}0550 LDA #90560 STA ICBLL,X0570 JSR CIOV ;SKIP REMAINING HEADER0580 LDA SCN0590 STA ICBAL,X0600 } LDA SCN+10610 STA ICBAH,X0620 LDA TEMP0630 CMP #20640 BEQ JJ00650 GT9 LDX CHAN0660 LDA #00670 } STA ICBLH,X0680 STA ICBLL,X ;SPECIAL CASE; SINGLE DATA LOAD INTO ACCUM0690 GT0 JSR CIOV0700 BMI DONE ;ERROR }WHEN END OF FILE0710 CMP #00720 BEQ LJ1 ;FOR MSB,LSB,REPEATED DATA0730 CMP #1280740 BEQ LJ2 ;FOR }MSB,LSB,UNIQUE DATA0750 BCS G3 ;FOR <128 UNIQUE DATA0760 STA LSB ;0-1270770 JSR CIOV ;GET REPEATED} DATA0780 STA DATA0790 LDY YHOLD ;LAST Y VALUE0800 LDX XHOLD ;LAST ROW NUMBER, 0-1910810 GT1 LDA DATA082}0 STA (SCN),Y0830 TYA 0840 CLC 0850 ADC #80 ;SKIP A ROW0860 BCC GT20870 INC SCN+10880 GT2 T}AY 0890 INX ;COLUMN COUNT0900 CPX #96 ;TIME TO DO ODD ROWS IN COLUMN?0910 BNE J90920 INC COL } ;2ND ROW ON SCREEN STARTS AS 40th BYTE0930 LDY COL0940 GT7 LDA 880950 STA SCN0960 LDA 890970 STA SCN}+10980 GT6 DEC LSB0990 BNE GT1 ;KEEP FILLING SCREEN1000 G0 STY YHOLD ;DONE WITH THIS PASS1010 STX XHOLD10}20 CLC 1030 BCC GT91040 J9 CPX #192 ;TIME TO START A NEW COLUMN?1050 BNE GT61060 SEC 1070 LDA CO}L ;NEW COLUMN1080 SBC #391090 TAY 1100 LDX #0 ;NEW COLUMN STARTS WITH X COUNT OF ZERO1110 BEQ GT}71120 JJ0 BEQ JJ11130 LJ1 BEQ G11140 LJ2 BEQ LJ31150 LJ9 BNE GT11160 LJ4 BEQ GT11170 DONE RTS 1180 G3 AND #127 ;CL}EAR 7th BIT1190 STA LSB1200 G4 LDX CHAN1210 JSR CIOV ;GET UNIQUE DATA1220 LDX XHOLD ;ROW1230 LDY Y}HOLD1240 STA (SCN),Y ;PUT DATA TO SCREEN1250 TYA ;SET UP FOR NEXT SCREEN LOCATION1260 CLC 1270 AD}C #80 ;SKIP A ROW1280 BCC G51290 INC SCN+11300 G5 TAY 1310 INX 1320 CPX #96 ;TIME TO DO ODD ROW}S IN COLUMN?1330 BNE G61340 INC COL1350 LDY COL1360 G7 LDA 88 ;RESET SCREEN POSITION1370 STA SCN1 }380 LDA 891390 STA SCN+11400 G8 STY YHOLD1410 STX XHOLD1420 DEC LSB ;DONE YET?1430 BNE G4 !}:NO, KEEP FILLING SCREEN1440 BEQ G01450 G6 CPX #1921460 BNE G81470 SEC 1480 LDA COL ;SET UP FOR NEW"} COLUMN1490 SBC #391500 TAY 1510 LDX #01520 BEQ G71530 LJ6 BEQ G01540 LJ3 BEQ G21550 LJ5 BNE LJ91560 #}LJ7 BEQ G41570 LJ8 BNE G41580 JJ1 BEQ JJ21590 G1 JSR CIOV ;GET MSB1600 STA MSB1610 JSR CIOV ;GET LSB1620$} STA LSB1630 JSR CIOV ;DATA TO BE REPEATED1640 STA DATA1650 LDA #01660 STA TEMP ;FULL PAGE COUN%}T1670 LDY YHOLD1680 LDX XHOLD ;COLUMN COUNT1690 LDA MSB ;ANY FULL PAGES?1700 BEQ LJ41710 GG3 LDA D&}ATA ;DO FULL PAGES FIRST1720 STA (SCN),Y1730 TYA 1740 CLC 1750 ADC #801760 BCC GG51770 INC S'}CN+11780 GG5 TAY 1790 INX ;ROW COUNT1800 CPX #961810 BNE GG61820 INC COL1830 LDY COL ;N(}EW Y1840 GG7 LDA 881850 STA SCN1860 LDA 891870 STA SCN+1 ;RESET SCREEN1880 GG4 INC TEMP ;IF 0 THEN ONE )}PAGE HAS BEEN LOADED1890 BNE GG31900 DEC MSB ;IF 0 THEN DONE WITH FULL PAGES1910 BNE GG31920 LDA LSB*}1930 BEQ LJ6 ;IN CASE LSB WAS ZERO AFTER DOING FULL PAGES1940 BNE LJ51950 JJ2 BEQ HT91960 GG6 CPX #1921970 +} BNE GG41980 LDX #01990 SEC 2000 LDA COL2010 SBC #392020 TAY 2030 CLC 2040 BCC GG72050 G,}G2 LDA LSB2060 BEQ LJ62070 BNE LJ52080 LL6 BEQ LJ62090 LL8 BNE LJ82100 G2 JSR CIOV ;MSB2110 STA MSB212-}0 JSR CIOV ;LSB2130 STA LSB2140 LDA MSB2150 BEQ LJ72160 LDA #02170 STA TEMP2180 J1 LDX CHAN.} ;OPENED CHANNEL2190 JSR CIOV ;GET FIRST UNIQUE DATA2200 LDX XHOLD2210 LDY YHOLD2220 STA (SCN),Y ;D/}ATA TO SCREEN2230 TYA 2240 CLC 2250 ADC #802260 BCC J32270 INC SCN+12280 J3 TAY ;SET UP FO0}R NEXT SCREEN POSITION2290 INX 2300 CPX #96 ;EVEN ROWS DONE?2310 BNE J6 ;NO2320 INC COL2330 1} LDY COL2340 J7 LDA 882350 STA SCN2360 LDA 892370 STA SCN+12380 J4 STX XHOLD2390 STY YHOLD2400 I2}NC TEMP ;IF 0 THEN ONE PAGE HAS BEEN LOADED2410 BNE J12420 DEC MSB2430 BNE J12440 LDA LSB2450 BEQ3} LL62460 BNE LL82470 J6 CPX #1922480 BNE J42490 LDX #02500 SEC 2510 LDA COL2520 SBC #392530 4} TAY 2540 LDX #02550 BEQ J72560 HT9 LDA #02570 STA ICBLH,X2580 STA ICBLL,X ;SPECIAL CASE; SINGLE DATA5} LOAD INTO ACCUM2590 HT0 JSR CIOV2600 BMI H5 ;ERROR WHEN END OF FILE2610 CMP #02620 BEQ HT1 ;FOR MSB6},LSB,REPEATED DATA2630 CMP #1282640 BEQ H2 ;FOR MSB,LSB,UNIQUE DATA2650 BCS H3 ;FOR <128 UNIQUE DATA7}2660 STA YHOLD ;FOR <128 REPEATED DATA2670 JSR CIOV ;GET DATA TO REPEAT2680 LDY YHOLD2690 DEY 2700 8}HT7 STA (SCN),Y2710 DEY 2720 BPL HT7 ;Y CAN ONLY BE 0 TO 1262730 LDA YHOLD ;SET NEW SCREEN ADDRESS2740 9} CLC 2750 BCC H12760 HT1 JSR CIOV ;MSB2770 STA MSB2780 JSR CIOV ;LSB2790 STA LSB2800 JSR C:}IOV ;DATA TO BE REPEATED2810 LDY #02820 LDX MSB2830 BEQ HT22840 HT3 STA (SCN),Y2850 INY 2860 BNE;} HT32870 INC SCN+1 ;DO FULL PAGES FIRST2880 DEX 2890 BNE HT32900 HT2 LDX LSB2910 BEQ HT52920 HT4 STA <}(SCN),Y2930 INY 2940 DEX 2950 BNE HT42960 HT5 LDX CHAN2970 CLC 2980 TYA ;PREPARE SCREEN LOC=}ATION2990 H1 ADC SCN3000 STA SCN3010 BCC HT93020 INC SCN+13030 BNE HT93040 H5 RTS 3050 HT8 BNE HT93>}060 H3 AND #127 ;CLEAR 7th BIT3070 STA ICBLL,X ;<128 UNIQUE DATA ROUTINE3080 LDA SCN+13090 STA ICBAH,X310?}0 LDA SCN3110 STA ICBAL,X ;DESTINATION SET3120 JSR CIOV ;MOVE DATA, ONE FOR ONE3130 LDA ICBLL,X ;LENGTH@} AGAIN & SET NEW SCREEN LOCATION3140 CLC 3150 BCC H13160 H2 JSR CIOV ;MSB3170 STA MSB3180 JSR CIOV A} ;LSB3190 STA ICBLL,X3200 LDA MSB3210 STA ICBLH,X ;LENGTH NOW SET3220 LDA SCN+13230 STA ICBAH,X324B}0 LDA SCN3250 STA ICBAL,X ;ADDRESS SET3260 JSR CIOV ;TRANSFER ALL DATA3270 CLC 3280 LDA ICBLL,X32C}90 ADC SCN3300 STA SCN3310 LDA ICBLH,X3320 ADC SCN+13330 STA SCN+13340 BNE HT8= $380040 ICBALl10 ; SOURCE.048 LINE 40-8020 ;LOADS A VERTICAL FORMAT TOUCH TABLET PICTURE.30 *= $380040 ICBAL = $034450 ICBAE}H = $034560 ICBLL = $034870 ICBLH = $034980 ICCOM = $034290 CIOV = $E4560100 SCN = $CB0110 XHOLD = $CD012F}0 YHOLD = $CE0130 LSB = $CF0140 MSB = $D00150 CHAN = $D40160 TEMP = $D60170 COL = $D10180 DATA = $D50190 G}PLA 0200 PLA 0210 PLA 0220 TAX ;CHANNEL *160230 STA CHAN0240 LDA #70250 STA ICCOM,X ;COH}MMAND BYTE0260 LDA #00270 STA ICBLH,X ;HI BYTE LENGTH0280 STA ICBAH,X ;HI OF PLACE TO DUMP DATA0290 STA XI}HOLD0300 STA YHOLD0310 LDA #130320 STA ICBLL,X ;SKIP FIRST 13 BYTES IN HEADER0330 LDA #390340 STA COJ}L ;COLUMN COUNT0350 LDA #$D7 ;PLACE TO DUMP DATA0360 STA ICBAL,X0370 JSR CIOV ;GET DATA0380 LDAK} #50390 STA ICBLL,X ;FIVE COLOR REGISTERS0400 LDA #708/256 ;GET AND PLACE 5 COLOR REGISTER DATA0410 STA ICBAH,L}X0420 LDA #708&2550430 STA ICBAL,X0440 JSR CIOV0450 LDA #$D70460 STA ICBAL,X ;RESET DUMP LOC.0470 M} LDA #00480 STA ICBAH,X ;HI BYTE0490 LDA #90500 STA ICBLL,X0510 JSR CIOV ;SKIP REMAINING HEADER0520N} LDA 880530 STA SCN0540 STA ICBAL,X0550 LDA 890560 STA SCN+10570 STA ICBAH,X0580 GT9 LDX CHAN0O}590 LDA #00600 STA ICBLH,X0610 STA ICBLL,X ;SPECIAL CASE; SINGLE DATA LOAD INTO ACCUM0620 GT0 JSR CIOV0630 P} BMI DONE ;ERROR WHEN END OF FILE0640 CMP #00650 BEQ LJ1 ;FOR MSB,LSB,REPEATED DATA0660 CMP #1280670 Q} BEQ LJ2 ;FOR MSB,LSB,UNIQUE DATA0680 BCS G3 ;FOR <128 UNIQUE DATA0690 STA LSB ;0-1270700 JSR R}CIOV ;GET REPEATED DATA0710 STA DATA0720 LDY YHOLD ;LAST Y VALUE0730 LDX XHOLD ;LAST ROW NUMBER, 0-191S}0740 GT1 LDA DATA0750 STA (SCN),Y0760 TYA 0770 CLC 0780 ADC #80 ;SKIP A ROW0790 BCC GT20800 T} INC SCN+10810 GT2 TAY 0820 INX ;COLUMN COUNT0830 CPX #96 ;TIME TO DO ODD ROWS IN COLUMN?0840 BNEU} J90850 INC COL ;2ND ROW ON SCREEN STARTS AS 40th BYTE0860 LDY COL0870 GT7 LDA 880880 STA SCN0890 LDV}A 890900 STA SCN+10910 GT6 DEC LSB0920 BNE GT1 ;KEEP FILLING SCREEN0930 G0 STY YHOLD ;DONE WITH THIS PASSW}0940 STX XHOLD0950 CLC 0960 BCC GT90970 J9 CPX #192 ;TIME TO START A NEW COLUMN?0980 BNE GT60990 X} SEC 1000 LDA COL ;NEW COLUMN1010 SBC #391020 TAY 1030 LDX #0 ;NEW COLUMN STARTS WITH X COUNT OFY} ZERO1040 BEQ GT71050 LJ1 BEQ G11060 LJ2 BEQ LJ31070 LJ9 BNE GT11080 LJ4 BEQ GT11090 DONE RTS 1100 G3 AND #127 Z} ;CLEAR 7th BIT1110 STA LSB1120 G4 LDX CHAN1130 JSR CIOV ;GET UNIQUE DATA1140 LDX XHOLD ;ROW1150 L[}DY YHOLD1160 STA (SCN),Y ;PUT DATA TO SCREEN1170 TYA ;SET UP FOR NEXT SCREEN LOCATION1180 CLC 1190 \} ADC #80 ;SKIP A ROW1200 BCC G51210 INC SCN+11220 G5 TAY 1230 INX 1240 CPX #96 ;TIME TO DO ODD]} ROWS IN COLUMN?1250 BNE G61260 INC COL1270 LDY COL1280 G7 LDA 88 ;RESET SCREEN POSITION1290 STA S^}CN1300 LDA 891310 STA SCN+11320 G8 STY YHOLD1330 STX XHOLD1340 DEC LSB ;DONE YET?1350 BNE G4 _} :NO, KEEP FILLING SCREEN1360 BEQ G01370 G6 CPX #1921380 BNE G81390 SEC 1400 LDA COL ;SET UP FOR`} NEW COLUMN1410 SBC #391420 TAY 1430 LDX #01440 BEQ G71450 LJ6 BEQ G01460 LJ3 BEQ G21470 LJ5 BNE LJ91a}480 LJ7 BEQ G41490 LJ8 BNE G41500 G1 JSR CIOV ;GET MSB1510 STA MSB1520 JSR CIOV ;GET LSB1530 STA LSBb}1540 JSR CIOV ;DATA TO BE REPEATED1550 STA DATA1560 LDA #01570 STA TEMP ;FULL PAGE COUNT1580 LDc}Y YHOLD1590 LDX XHOLD ;COLUMN COUNT1600 LDA MSB ;ANY FULL PAGES?1610 BEQ LJ41620 GG3 LDA DATA ;DO FUd}LL PAGES FIRST1630 STA (SCN),Y1640 TYA 1650 CLC 1660 ADC #801670 BCC GG51680 INC SCN+11690 GG5e} TAY 1700 INX ;ROW COUNT1710 CPX #961720 BNE GG61730 INC COL1740 LDY COL ;NEW Y1750 GG7f} LDA 881760 STA SCN1770 LDA 891780 STA SCN+1 ;RESET SCREEN1790 GG4 INC TEMP ;IF 0 THEN ONE PAGE HAS BEENg} LOADED1800 BNE GG31810 DEC MSB ;IF 0 THEN DONE WITH FULL PAGES1820 BNE GG31830 LDA LSB1840 BEQ h}LJ6 ;IN CASE LSB WAS ZERO AFTER DOING FULL PAGES1850 BNE LJ51860 GG6 CPX #1921870 BNE GG41880 LDX #01890i} SEC 1900 LDA COL1910 SBC #391920 TAY 1930 CLC 1940 BCC GG71950 GG2 LDA LSB1960 BEQ LJ619j}70 BNE LJ51980 LL6 BEQ LJ61990 LL8 BNE LJ82000 G2 JSR CIOV ;MSB2010 STA MSB2020 JSR CIOV ;LSB2030 k} STA LSB2040 LDA MSB2050 BEQ LJ72060 LDA #02070 STA TEMP2080 J1 LDX CHAN ;OPENED CHANNEL2090 Jl}SR CIOV ;GET FIRST UNIQUE DATA2100 LDX XHOLD2110 LDY YHOLD2120 STA (SCN),Y ;DATA TO SCREEN2130 TYA 21m}40 CLC 2150 ADC #802160 BCC J32170 INC SCN+12180 J3 TAY ;SET UP FOR NEXT SCREEN POSITION2190 n} INX 2200 CPX #96 ;EVEN ROWS DONE?2210 BNE J6 ;NO2220 INC COL2230 LDY COL2240 J7 LDA 882250 o} STA SCN2260 LDA 892270 STA SCN+12280 J4 STX XHOLD2290 STY YHOLD2300 INC TEMP ;IF 0 THEN ONE PAGEp} HAS BEEN LOADED2310 BNE J12320 DEC MSB2330 BNE J12340 LDA LSB2350 BEQ LL62360 BNE LL82370 J6 q} CPX #1922380 BNE J42390 LDX #02400 SEC 2410 LDA COL2420 SBC #392430 TAY 2440 LDX #02450 r} BEQ J7.048 LINE 40-8020 ;LOADS A VERTICAL FORMAT TOUCH TABLET PICTURE.30 *= $380040 ICBAL = $034450 ICBA 10 ; SOURCE.O4520 ;SAVES A GR.E PICTURE ON THE SCREEN TO STRIP POKER FORMAT30 *= $060040 ICCOM = $034250 ICBAL =t} $034460 ICBAH = $034570 ICBLL = $034880 ICBLH = $034990 XHOLD = $D00100 CIOV = $E4560110 CODE = $CF0120 Hu}OLD = $CD0130 SCN = $CB0140 PLA 0150 PLA 0160 PLA ;GET CHANNEL OPENED, 0,1,2,3 ECT.0170 ASL Av}0180 ASL A0190 ASL A0200 ASL A ;MULTIPLY BY 16 FOR CORRECT VALUE0210 TAX 0220 STA XHOLD0230 w} LDA #110240 STA ICCOM,X ;COMMAND BYTE, 11 FOR WRITE0250 STA CODE ;ANY NUMBER WILL DO FOR SEED NUMBER0260 x} PLA 0270 STA ICBAH,X ;HI ADDRESS OF DATA FROM OR TO COMPUTER MEMORY0280 STA SCN+10290 PLA 0300 STA ICBALy},X ;LO ADDRESS0310 STA SCN0320 LDA #210330 STA ICBLH,X ;HI LENGTH OF DATA TO BE PASSED0340 STA HOLD+1035z}0 LDA #2240360 STA ICBLL,X ;LO LENGTH0370 STA HOLD0380 ;NOW TO CODE SCREEN0390 LDX HOLD+10400 LDY #0{}0410 LOOP LDA (SCN),Y0420 EOR CODE0430 STA (SCN),Y ;DO FULL PAGES FIRST0440 INC CODE0450 INY 0460 B|}NE LOOP0470 INC SCN+10480 DEX 0490 BNE LOOP0500 LDX HOLD ;REST OF SCREEN0510 LOOP1 LDA (SCN),Y0520 }} EOR CODE0530 STA (SCN),Y0540 INC CODE0550 INY 0560 DEX 0570 BNE LOOP10580 LDX XHOLD0590 ~} JSR CIOV ;TRANSFER SCREEN DATA0600 LDA #00610 STA ICBLH,X0620 STA ICBLL,X ;NOW FIX COLOR REGISTERS0630 } LDA 7120640 JSR CIOV0650 LDA 7080660 JSR CIOV0670 LDA 7090680 JSR CIOV0690 LDA 7100700 J}SR CIOV0710 LDA #11 ;SEE LINE 2300720 JSR CIOV ;LAST BYTE IS FOR DECODING0730 RTS = $034250 ICBAL =i10 ; SOURCE.046 LINES 50 & 6020 ;READS A TYPESETTER ICON FILE AND DISPLAYS IT ON THE SCREEN 20 BYTES WIDE BY 80 ROWS.30 } *= $060040 ICCOM = $034250 ICBAL = $034460 ICBAH = $034570 ICBLL = $034880 ICBLH = $034990 CIOV = $E }4560100 SCN = $CB0110 PASS = $CF0120 YHOLD = $CD0130 XHOLD = $CE0140 LASTS = $D00150 DRIVE = $D10160 PLA 0170 } PLA 0180 STA SCN+10190 PLA 0200 STA SCN ;SCREEN DESTINATION0210 PLA 0220 PLA 0230 ASL A }0240 ASL A0250 ASL A0260 ASL A ;x160270 TAX ;DRIVE NUMBER0280 STA DRIVE ;HOLD FOR LA }TER0290 LDA #1250300 STA ICBLL,X0310 STA LASTS ;125 PICTURE DATA PER SECTOR0320 LDA #00330 STA ICB }LH,X ;125 BYTES BUFFER LENGTH0340 STA ICBAL,X0350 STA PASS ;SECTORS TO READ = 130360 STA YHOLD0370 LDA } #2550380 STA XHOLD0390 LDA #60400 STA ICBAH,X ;BUFFER IS 15360410 LDA #70420 STA ICCOM,X ;INPUT ONE } OR MORE CHARACTERS0430 GT0 LDX DRIVE ;NEED EACH TIME YOU DO A JSR0440 JSR CIOV ;READ ONE SECTOR0450 LDY YHOL }D0460 LDX XHOLD0470 GT1 INX 0480 CLC 0490 CPX LASTS0500 BEQ GT30510 LDA 1536,X0520 STA (SCN),Y }0530 INY 0540 CPY #200550 BNE GT10560 CLC 0570 LDA SCN0580 ADC #400590 STA SCN0600 LD }A SCN+10610 ADC #00620 STA SCN+10630 LDY #00640 BEQ GT10650 GT3 CLC 0660 LDX #2550670 STX XHOL }D0680 STY YHOLD0690 INC PASS0700 LDA PASS0710 CMP #130720 BEQ DONE0730 CMP #12 ;12 SECTORS }x 125 PER SECTOR =1500 BYTES READ0740 BNE GT00750 LDA #100 ;LAST SECTOR HAS 100 PICTURE DATA LEFT FOR TOTAL OF 1 }6000760 STA LASTS0770 BNE GT00780 DONE RTS ICON FILE AND DISPLAYS IT ON THE SCREEN 20 BYTES WIDE BY 80 ROWS.30 710 ; SOURCE.047 LINES 40 TO 6020 ;LOADS A HORIZONTAL FORMAT TOUCH TABLET PICTURE.30 *= $380040 ICBAL = $03445}0 ICBAH = $034560 ICBLL = $034870 ICBLH = $034980 ICCOM = $034290 CIOV = $E4560100 SCN = $CB0110 YHOLD = $}CE0120 LSB = $CF0130 MSB = $D00140 CHAN = $CD0150 PLA 0160 PLA 0170 PLA 0180 TAX ;CHANNEL} *160190 STA CHAN0200 LDA #70210 STA ICCOM,X ;COMMAND BYTE0220 LDA #00230 STA ICBLH,X ;HI BYTE LENGT}H0240 STA ICBAH,X ;HI OF PLACE TO DUMP DATA0250 STA YHOLD0260 LDA #130270 STA ICBLL,X ;SKIP FIRST 13 BYTE}S IN HEADER0280 LDA #$D6 ;PLACE TO DUMP DATA0290 STA ICBAL,X0300 JSR CIOV ;GET DATA0310 LDA #50320} STA ICBLL,X ;FIVE COLOR REGISTERS0330 LDA #708/256 ;GET AND PLACE 5 COLOR REGISTER DATA0340 STA ICBAH,X0350 } LDA #708&2550360 STA ICBAL,X0370 JSR CIOV0380 LDA #$D60390 STA ICBAL,X ;RESET DUMP LOC.0400 LDA #}00410 STA ICBAH,X ;HI BYTE0420 LDA #90430 STA ICBLL,X0440 JSR CIOV ;SKIP REMAINING HEADER0450 LDA} 880460 STA SCN0470 STA ICBAL,X0480 LDA 890490 STA SCN+10500 STA ICBAH,X0510 HT9 LDA #00520 ST}A ICBLH,X0530 STA ICBLL,X ;SPECIAL CASE; SINGLE DATA LOAD INTO ACCUM0540 HT0 JSR CIOV0550 BMI H5 ;ERROR WHEN }END OF FILE0560 CMP #00570 BEQ HT1 ;FOR MSB,LSB,REPEATED DATA0580 CMP #1280590 BEQ H2 ;FOR MSB,L}SB,UNIQUE DATA0600 BCS H3 ;FOR <128 UNIQUE DATA0610 STA YHOLD ;FOR <128 REPEATED DATA0620 JSR CIOV ;}GET DATA TO REPEAT0630 LDY YHOLD0640 DEY 0650 HT7 STA (SCN),Y0660 DEY 0670 BPL HT7 ;Y CAN ONLY BE 0 }TO 1260680 LDA YHOLD ;SET NEW SCREEN ADDRESS0690 CLC 0700 BCC H10710 HT1 JSR CIOV ;MSB0720 STA MSB}0730 JSR CIOV ;LSB0740 STA LSB0750 JSR CIOV ;DATA TO BE REPEATED0760 LDY #00770 LDX MSB0780 } BEQ HT20790 HT3 STA (SCN),Y0800 INY 0810 BNE HT30820 INC SCN+1 ;DO FULL PAGES FIRST0830 DEX 0840 } BNE HT30850 HT2 LDX LSB0860 BEQ HT50870 HT4 STA (SCN),Y0880 INY 0890 DEX 0900 BNE HT40910 HT5 LDX CH}AN0920 CLC 0930 TYA ;PREPARE SCREEN LOCATION0940 H1 ADC SCN0950 STA SCN0960 BCC HT90970 IN}C SCN+10980 HT8 BNE HT90990 H5 RTS 1000 H3 AND #127 ;CLEAR 7th BIT1010 STA ICBLL,X ;<128 UNIQUE DATA ROUTINE102}0 LDA SCN+11030 STA ICBAH,X1040 LDA SCN1050 STA ICBAL,X ;DESTINATION SET1060 JSR CIOV ;MOVE DATA, }ONE FOR ONE1070 LDA ICBLL,X ;LENGTH AGAIN & SET NEW SCREEN LOCATION1080 CLC 1090 BCC H11100 H2 JSR CIOV ;}MSB1110 STA MSB1120 JSR CIOV ;LSB1130 STA ICBLL,X1140 LDA MSB1150 STA ICBLH,X ;LENGTH NOW SET116}0 LDA SCN+11170 STA ICBAH,X1180 LDA SCN1190 STA ICBAL,X ;ADDRESS SET1200 JSR CIOV ;TRANSFER ALL DA}TA1210 CLC 1220 LDA ICBLL,X1230 ADC SCN1240 STA SCN1250 LDA ICBLH,X1260 ADC SCN+11270 STA }SCN+11280 BNE HT8S 40 TO 6020 ;LOADS A HORIZONTAL FORMAT TOUCH TABLET PICTURE.30 *= $380040 ICBAL = $034450 AND #40400 BEQ LEFT0410 TYA 0420 AND #80430 BEQ RIGHT0440 EXIT JMP RETURN ;DONE, OR JOYSTICK IN NU4}ETRAL POSITION0450 UP LDX SIZE0460 LDY YLOC0470 CPY YLIML ;HAVE WE REACHED THE LOW LIMIT?0480 BEQ TESTUP04}490 DEC YLOC ;NEW YLOC VALUE0500 LOOP LDA (PLAY0),Y ;GET DATA0510 DEY 0520 STA (PLAY0),Y0530 INY 05404} INY 0550 DEX 0560 BPL LOOP0570 JMP RETURN0580 DOWN LDX SIZE0590 LDA YLOC0600 CMP YLIMH0610 4} BEQ TESTD ;HAVE WE REACHED THE HIGH LIMIT?0620 INC YLOC0630 CLC 0640 ADC SIZE0650 TAY 0660 DEY 4}0670 LP1 LDA (PLAY0),Y ;GET DATA0680 INY 0690 STA (PLAY0),Y ;NEXT HIGHER BYTE0700 DEY 0710 DEY 0720 4}DEX 0730 BPL LP10740 JMP RETURN0750 RIGHT LDX XLOC0760 CPX XLIMH0770 BCS TESTR ;IF => THEN WRAP0780 G4}T9 INX 0790 DEC TEMP0800 BNE GT9 ;NEW X VALUE0810 GT2 STX XLOC0820 STX HPOSP00830 GT1 JMP RETURN0840 TE4}STR LDA WRAP0850 BEQ GT10860 LDX XLIML0870 CLC 0880 BCC GT20890 LEFT LDX XLOC0900 CPX XLIML0910 4} BCC TESTL0920 BEQ TESTL0930 GT8 DEX 0940 DEC TEMP0950 BNE GT8 ;JUMP HORIZONTALLY0960 CLC 0970 4} BCC GT20980 TESTL LDA WRAP0990 BEQ GT11000 LDX XLIMH1010 CLC 1020 BCC GT21030 TESTUP LDA WRAP1040 4} BEQ GT1 ;STOP AT LIMITS1050 LDA YLIMH1060 STA YLOC1070 STA YHTEMP1080 LDA YLIML1090 STA YLTEMP4}1100 UP1 LDY YLTEMP1110 LDA (PLAY0),Y ;GET DATA1120 LDY YHTEMP1130 STA (PLAY0),Y ;NEW LOCATION1140 LDA #04}1150 LDY YLTEMP1160 STA (PLAY0),Y ;ZERO OUT OLD LOC.1170 INC YLTEMP1180 INC YHTEMP1190 DEX 1200 4} BPL UP11210 JMP RETURN1220 TESTD LDA WRAP1230 BEQ GT1 ;STOP AT LIMITS1240 LDA YLIML1250 STA YLOC124}60 STA YLTEMP1270 LDA YLIMH1280 STA YHTEMP1290 DN1 LDY YHTEMP1300 LDA (PLAY0),Y1310 LDY YLTEMP1320 4} STA (PLAY0),Y ;NEW LOCATION1330 LDA #01340 LDY YHTEMP1350 STA (PLAY0),Y ;ZERO OUT OLD LOC.1360 INC YL4}TEMP1370 INC YHTEMP1380 DEX 1390 BPL DN11400 JMP RETURN STA (PLAY0),Y ;ZERO OUT OLD LOC.1360 INC YL4L10 ;SOURCE.090 LINES 90-11020 ;VBI ROUTINE. ONE PLAYER WITH WRAP OR STOP LIMITS. DATA IN PAGE SIX AND ROUTINE IN PMBASE 8}** 2 BYTE MOVE **30 RETURN = $E46240 STICK0 = $027850 HPOSP0 = 53248 ;HORIZONTAL POSITION OF PLAYER 060 PMBASE = $C8}B ;TO BE POKED IN LATER70 PLAY0 = $CD ;TO BE POKED IN LATER80 SIZE = 154390 XLIML = 15380100 XLIMH = 15398}0110 YLIML = 15400120 YLIMH = 15410130 XLOC = 15440140 YLOC = 15450150 WRAP = 1542 ;0 MEANS STOP AND 1 MEANS WRAP08}160 JUMPH = 15460170 YLTEMP = $CF0180 YHTEMP = $D00190 TEMP = $D10200 *= $35000210 LDA 1536 ;LO OF PMBASE08}220 STA PMBASE0230 STA PLAY00240 LDA JUMPH0250 STA TEMP0260 LDA 15370270 STA PMBASE+1 ;FOR PAGE 8}ZERO ADDRESSING0280 CLC 0290 ADC #40300 STA PLAY0+1 ;PLAYER 0 ADDRESS0310 LDY STICK0 ;JOYSTICK VALUE0328}0 TYA 0330 AND #10340 BEQ UP0350 TYA 0360 AND #20370 BEQ DOWN0380 TYA 0390 AND #404008} BEQ LEFT0410 TYA 0420 AND #80430 BEQ RIGHT0440 EXIT JMP RETURN ;DONE, OR JOYSTICK IN NUETRAL POSITION048}50 UP LDX SIZE0460 LDY YLOC0470 CPY YLIML ;HAVE WE REACHED THE LOW LIMIT?0480 BCC TESTUP ;IF LESS THAN LIM8}IT0490 BEQ TESTUP ;OR = TO LIMIT0500 DEC YLOC ;NEW YLOC VALUE0510 DEC YLOC ;FOR 2 BYTE MOVE0520 IN8}X ;FOR 2 BYTE MOVE0530 LOOP LDA (PLAY0),Y ;GET DATA0540 DEY 0550 DEY ;FOR 2 BYTE MOVE0560 STA8} (PLAY0),Y0570 INY 0580 INY 0590 INY ;FOR 2 BYTE MOVE0600 DEX 0610 BPL LOOP0620 JMP RET8}URN0630 DOWN LDX SIZE0640 LDA YLOC0650 CMP YLIMH0660 BCS GT7 ;HAVE WE REACHED THE HIGH LIMIT?0670 IN8}C YLOC0680 INC YLOC ;FOR 2 BYTE MOVE0690 CLC 0700 ADC SIZE0710 TAY 0720 DEY 0730 INX 8} ;FOR 2 BYTE MOVE0740 LP1 LDA (PLAY0),Y ;GET DATA0750 INY 0760 INY ;FOR 2 BYTE MOVE0770 STA (PLAY0),Y8} ;NEXT HIGHER BYTE0780 DEY 0790 DEY 0800 DEY ;FOR 2 BYTE MOVE0810 DEX 0820 BPL LP10830 8}JMP RETURN0840 RIGHT LDX XLOC0850 CPX XLIMH0860 BCS TESTR0870 GT9 INX 0880 DEC TEMP0890 BNE GT90900 GT8}2 STX XLOC0910 STX HPOSP00920 GT1 JMP RETURN0930 TESTR LDA WRAP0940 BEQ GT10950 LDX XLIML0960 CLC 09708} BCC GT20980 LEFT LDX XLOC0990 CPX XLIML1000 BCC TESTL1010 BEQ TESTL1020 GT8 DEX 1030 DEC TEMP10408} BNE GT81050 CLC 1060 BCC GT21070 TESTL LDA WRAP1080 BEQ GT11090 LDX XLIMH1100 CLC 1110 BC8}C GT21120 GT7 BCS TESTD1130 TESTUP LDA WRAP1140 BEQ GT1 ;STOP AT LIMITS1150 LDA YLOC1160 STA YLTEMP11708} LDA YLIMH1180 STA YLOC1190 STA YHTEMP1200 UP1 LDY YLTEMP1210 LDA (PLAY0),Y ;GET DATA1220 LDY YHTEMP8}1230 STA (PLAY0),Y ;NEW LOCATION1240 LDA #01250 LDY YLTEMP1260 STA (PLAY0),Y ;ZERO OUT OLD LOC.1270 8}INC YLTEMP1280 INC YHTEMP1290 DEX 1300 BPL UP11310 JMP RETURN1320 TESTD LDA WRAP1330 BEQ GT1 ;S8}TOP AT LIMITS1340 LDA YLOC1350 STA YHTEMP ;SINCE YLOC COULD BE => TO YLIMH1360 LDA YLIML1370 STA YLOC138}80 STA YLTEMP1390 DN1 LDY YHTEMP1400 LDA (PLAY0),Y1410 LDY YLTEMP1420 STA (PLAY0),Y ;NEW LOCATION1430 8} LDA #01440 LDY YHTEMP1450 STA (PLAY0),Y ;ZERO OUT OLD LOC.1460 INC YLTEMP1470 INC YHTEMP1480 DEX 8}1490 BPL DN11500 JMP RETURN STA (PLAY0),Y ;ZERO OUT OLD LOC.1460 INC YLTEMP1470 INC YHTEMP1480 DEX 8%10 ;SOURCE.091 LINE 15020 ;VBI SETUP ROUTINE. TWO PLAYERS WITH WRAPPING.30 *= $060040 SETVBV = $E45C50 PMBAS<}E = 153660 XLIML = 154070 XLIMH = 154180 YLIML = 154290 YLIMH = 15430100 SIZE = 15440110 XLOC = 15450120 YL<}OC = 15460130 WRAP = 15380140 JUMPH = 15390150 TEMP = $CB0160 *= $06000170 PLA 0180 LDA #2550190 S<}TA TEMP0200 PLA 0210 STA PMBASE+1 ;HI BYTE0220 PLA 0230 STA PMBASE0240 TAY 0250 PLA 0260 P<}LA 0270 STA WRAP0280 LDX #0 ;FOR JOYSTICK ONE0290 PLA 0300 PLA 0310 STA JUMPH ;HORIZONTAL MOV<}EMENT AMOUNT0320 JOY1 PLA 0330 PLA 0340 STA XLIML,X0350 PLA 0360 PLA 0370 STA XLIMH,X0380 PLA <}0390 PLA 0400 STA YLIML,X0410 PLA 0420 PLA 0430 STA YLIMH,X0440 PLA 0450 PLA 0460 STA<} SIZE,X0470 PLA 0480 PLA 0490 STA XLOC,X0500 PLA 0510 PLA 0520 STA YLOC,X0530 LDX #7 <};NOW SET UP FOR 2ND JOYSTICK DATA FROM 1546 TO 15520540 INC TEMP0550 BEQ JOY1 ;GO FOR SECOND JOYSTICK0560 L<}DX #6 ;NOW PLACE JOY ONE VALUES IN A SAFE PLACE IN PAGE SIX FOR USE IN VBI ROUTINE0570 LOOP LDA 1540,X0580 STA 155<}4,X0590 DEX 0600 BPL LOOP0610 LDX PMBASE+1 ;HI BYTE0620 LDA #7 ;DEFERRED VECTOR0630 JSR SETVBV<}0640 RTS EX 0600 BPL LOOP0610 LDX PMBASE+1 ;HI BYTE0620 LDA #7 ;DEFERRED VECTOR0630 JSR SETVBV<10 ;SOURCEA.091 LINES 100-130.20 ;VBI ROUTINE. TWO PLAYERS WITH WRAP. DATA IN PAGE 6 AND ROUTINE IN PMBASE.30 RETUR@}N = $E46240 STICK0 = $027850 STICK1 = $027960 HPOSP0 = 53248 ;HORIZONTAL POSITION OF PLAYER 070 PMBASE = $CB ;@}TO BE POKED IN LATER80 PLAY0 = $CD ;TO BE POKED IN LATER90 SIZE = 15440100 XLIML = 15400110 XLIMH = 15410120 YL@}IML = 15420130 YLIMH = 15430140 XLOC = 15450150 YLOC = 15460160 WRAP = 1538 ;0 MEANS STOP AND 1 MEANS WRAP0170 JUM@}PH = 1539 ;HORIZONTAL MOVE AMOUNT0180 YLTEMP = $CF0190 YHTEMP = $D00200 JOY = 15610210 TEMP = $D10220 *= $350@}00230 LDA 1536 ;LO OF PMBASE0240 STA PMBASE0250 STA PLAY00260 LDA JUMPH0270 STA TEMP ;HORIZONT@}AL MOVE AMOUNT0280 LDA 15370290 STA PMBASE+1 ;FOR PAGE ZERO ADDRESSING0300 CLC 0310 ADC #40320 STA P@}LAY0+1 ;PLAYER 0 ADDRESS0330 LDY STICK0 ;JOYSTICK VALUE0340 LDA #00350 STA JOY0360 BEQ JOY00370 JOY1 LD@}Y #60380 LDA XLOC0390 STA 15590400 LDA YLOC0410 STA 1560 ;SINCE NEW VALUES0420 LDA JUMPH0430 @} STA TEMP ;RESTORE0440 LP3 LDA 1547,Y0450 STA 1540,Y0460 DEY 0470 BPL LP3 ;JOY1 DATA IN 1547 TO 1553 A@}ND NEED TO PLACE IN 1540 TO 15460480 LDY STICK1 ;SECOND JOYSTICK0490 INC PLAY0+1 ;2nd JOY IS ONE PAGE HIGHER IN ME@}MORY0500 JOY0 TYA 0510 AND #10520 BEQ UP0530 TYA 0540 AND #20550 BEQ DOWN0560 TYA 0570 AN@}D #40580 BEQ LFT0590 TYA 0600 AND #80610 BEQ RIGHT0620 BNE DONE0630 UP LDX SIZE0640 LDY YLOC@}0650 CPY YLIML ;HAVE WE REACHED THE LOW LIMIT?0660 BEQ TUP0670 DEC YLOC ;NEW YLOC VALUE0680 LOOP LDA (PLA@}Y0),Y ;GET DATA0690 DEY 0700 STA (PLAY0),Y0710 INY 0720 INY 0730 DEX 0740 BPL LOOP0750 BMI@} DONE0760 JY1 BEQ JOY10770 LFT BEQ LEFT0780 DOWN LDX SIZE0790 LDA YLOC0800 CMP YLIMH0810 BEQ JMP1 ;HAVE @}WE REACHED THE HIGH LIMIT?0820 INC YLOC0830 CLC 0840 ADC SIZE0850 TAY 0860 DEY 0870 LP1 LDA (PLAY0)@},Y ;GET DATA0880 INY 0890 STA (PLAY0),Y ;NEXT HIGHER BYTE0900 DEY 0910 DEY 0920 DEX 0930 BPL LP@}10940 BMI DONE0950 TUP BEQ TESTUP0960 RIGHT LDX XLOC0970 CPX XLIMH0980 BCS TESTR0990 GT9 INX 1000 DEC @}TEMP1010 BNE GT9 ;FOR HORIZONTAL MOVEMENT1020 GT2 STX XLOC1030 TXA 1040 LDY JOY1050 STA HPOSP0,Y106@}0 DONE INC JOY1070 LDA JOY1080 CMP #11090 BEQ JY1 ;NEXT JOYSTICK1100 LDA XLOC1110 STA 15521120 @} LDA YLOC1130 STA 1553 ;NEW 2ND JOY LOCATIONS1140 LDY #61150 LP4 LDA 1554,Y ;EXTRA STORAGE OF JOY0 DATA116@}0 STA 1540,Y1170 DEY 1180 BPL LP4 ;RESTORE JOY0 DATA IN 1540 TO 15461190 JMP RETURN1200 JMP1 BEQ TEST@}D1210 TESTR LDA WRAP1220 BEQ DONE1230 LDX XLIML1240 CLC 1250 BCC GT21260 LEFT LDX XLOC1270 CPX XLI@}ML1280 BCC TESTL1290 BEQ TESTL1300 GT8 DEX 1310 DEC TEMP1320 BNE GT8 ;FOR HORIZONTAL MOVE1330 C@}LC 1340 BCC GT21350 TESTL LDA WRAP1360 BEQ DONE1370 LDX XLIMH1380 BNE GT21390 TESTUP LDA WRAP1400 @}BEQ DONE ;STOP AT LIMITS1410 LDA YLIMH1420 STA YLOC1430 STA YHTEMP1440 LDA YLIML1450 STA YLTEMP1A}460 UP1 LDY YLTEMP1470 LDA (PLAY0),Y ;GET DATA1480 LDY YHTEMP1490 STA (PLAY0),Y ;NEW LOCATION1500 LDA #0A}1510 LDY YLTEMP1520 STA (PLAY0),Y ;ZERO OUT OLD LOC.1530 INC YLTEMP1540 INC YHTEMP1550 DEX 1560 A}BPL UP11570 GT3 BMI DONE1580 TESTD LDA WRAP1590 BEQ DONE ;STOP AT LIMITS1600 LDA YLIML1610 STA YLOC1620 A} STA YLTEMP1630 LDA YLIMH1640 STA YHTEMP1650 DN1 LDY YHTEMP1660 LDA (PLAY0),Y1670 LDY YLTEMP1680 A} STA (PLAY0),Y ;NEW LOCATION1690 LDA #01700 LDY YHTEMP1710 STA (PLAY0),Y ;ZERO OUT OLD LOC.1720 INC YLTEMA}P1730 INC YHTEMP1740 DEX 1750 BPL DN11760 BMI GT3 STA (PLAY0),Y ;ZERO OUT OLD LOC.1720 INC YLTEM@F10 ;SOURCE.092 LINE 20020 ; CLEARS VBI P/M ROUTINE IN 400/800 COMPUTERS.30 SDMCTL = 55940 GRACTL = 5327750 PMBASE = E}$CC ;PMBASE STARTING ADDRESS60 LEN = $CD70 SETVBV = $E45C80 *= $060090 PLA 0100 PLA 0110 E}STA PMBASE0120 INC PMBASE0130 PLA 0140 STA PMBASE-1 ;STORE STARTING ADDRESS OF P/M TABLE0150 LDA SDMCTL0E }160 CMP #46 ;DOUBLE RESOLUTION?0170 BEQ GT10180 INC PMBASE0190 INC PMBASE ;MISSILE STARTING ADDRESS0E }200 LDX #50210 LDA #00220 STA LEN ;LENGTH OF MEMORY TO CLEAR IN SINGLE RESOLUTION0230 BEQ START0240 GE }T1 LDA #1280250 STA PMBASE-1 ;MISSILE STARTING ADDRESS0260 STA LEN0270 LDX #2 ;LENGTH OF MEMORY TO CLEAR E }IN SINGLE RESOLUTION0280 START LDA #00290 TAY 0300 GT2 STA (PMBASE-1),Y0310 INY 0320 BNE GT20330 INC PME }BASE0340 DEX 0350 BNE GT20360 LDX LEN ;NOW FOR LOW BYTE0370 BEQ DONE0380 GT3 STA (PMBASE-1),Y0390 E} INY 0400 DEX 0410 BNE GT30420 DONE STA GRACTL ;DIS-ABLE P/M0430 LDX #330440 INX ;TO PREVENT CE}HARACTER 34 FROM APPEARING THE STRING0450 STX SDMCTL ;REGULAR SCREEN0460 LDX #2330470 LDY #62 ;DEFAULT VAE}LUE OF DEFERRED VBI VECTOR0480 LDA #7 ;FOR DEFERRED VECTOR0490 JSR SETVBV ;SET VECTOR0500 RTS EFAULT VADt10 ;SOURCEA.092 LINE 50020 ; CLEARS VBI P/M ROUTINES IN XL/XE COMPUTERS.30 SDMCTL = 55940 GRACTL = 5327750 PMBASE = I}$CC ;PMBASE STARTING ADDRESS60 LEN = $CD70 SETVBV = $E45C80 *= $060090 PLA 0100 PLA 0110 I}STA PMBASE0120 INC PMBASE0130 PLA 0140 STA PMBASE-1 ;STORE STARTING ADDRESS OF P/M TABLE0150 LDA SDMCTL0I}160 CMP #46 ;DOUBLE RESOLUTION?0170 BEQ GT10180 INC PMBASE0190 INC PMBASE ;MISSILE STARTING ADDRESS0I}200 LDX #50210 LDA #00220 STA LEN ;LENGTH OF MEMORY TO CLEAR IN SINGLE RESOLUTION0230 BEQ START0240 GI}T1 LDA #1280250 STA PMBASE-1 ;MISSILE STARTING ADDRESS0260 STA LEN0270 LDX #2 ;LENGTH OF MEMORY TO CLEAR I}IN SINGLE RESOLUTION0280 START LDA #00290 TAY 0300 GT2 STA (PMBASE-1),Y0310 INY 0320 BNE GT20330 INC PMI}BASE0340 DEX 0350 BNE GT20360 LDX LEN ;NOW FOR LOW BYTE0370 BEQ DONE0380 GT3 STA (PMBASE-1),Y0390 I} INY 0400 DEX 0410 BNE GT30420 DONE STA GRACTL ;DIS-ABLE P/M0430 LDX #330440 INX ;TO PREVENT CI}HARACTER 34 FROM APPEARING THE STRING0450 STX SDMCTL ;REGULAR SCREEN0460 LDX #1940470 LDY #138 ;DEFAULT VAI}LUE OF DEFERRED VBI VECTOR0480 LDA #7 ;FOR DEFERRED VECTOR0490 JSR SETVBV ;SET VECTOR0500 RTS EFAULT VAHt10 ;SOURCE.093 LINE 2020 ;STORES SEQUENCIAL NUMBERS IN MEMORY FROM 0 TO X (MAX.=256): SETS UP SOURCEA.093 ROUTINE.30M} STR = $CB40 STR2 = $CD50 COUNT = $CF60 *= $060070 PLA 80 PLA 90 STA STR+10100 PM}LA 0110 STA STR ;STRING TO PLACE SEQUENCIAL NUMBERS0120 PLA 0130 STA STR2+10140 PLA 0150 STA STRM}2 ;ADDRESS OF ANOTHER MEMORY AREA TO PLACE RANDOM NUMBER NON REPEATING. USED IN ANOTHER PROGRAM0160 PLA 0170 PLM }A 0180 TAY 0190 STA COUNT ;THE NUMBER OF NUMBERS TO RANDOMIZE0200 DEC COUNT0210 LOOP DEY 0220 TYA 023M!}0 STA (STR),Y ;FILL STRING FROM END TO BEGINNING0240 BNE LOOP0250 RTS C COUNT0210 LOOP DEY 0220 TYA 023LU10 ;SOURCEA.093 LINE 4020 ;TAKES SEQUENCIAL NUMBERS IN A STRING AND RANDOMIZES THEM INTO ANOTHER STRING NON REPEQ#}ATING.30 ;REQUIRES SOURCE.093 FOR SETUP.40 STR = $CB50 STR2 = $CD60 COUNT = $CF70 *= $060080 PLA Q$}90 PLA 0100 PLA ;RANDOM NUMBER FROM BASIC WITHIN LENGTH OF PRESENT SEQUENTIAL NUMBER STRING.0110 TAYQ%} 0120 TAX ;TEMPORARY HOLD , LOCATION INDICATOR0130 LDA (STR),Y ;GET SEQUENCIAL NUMBER0140 LDY COUNT Q&};START FILLING NEW STRING FROM LAST TO FIRST0150 STA (STR2),Y0160 CPX COUNT ;IS LOCATION IN STRING THE LAST ONE SQ'}O DON'T HAVE TO SHIFT REST OF STRING DOWN ONE?0170 BEQ DONE0180 TXA 0190 TAY 0200 GT3 INY ;SET UP TO Q(}GET NEXT NUMBER IN STRING AND SHIFT DOWN ONE SPACE, THEREBY DELETING THE NUMBER CH0210 LDA (STR),Y0220 DEY 0230 Q)} STA (STR),Y ;SHIFT0240 INY 0250 CPY COUNT ;DONE YET?0260 BNE GT30270 DONE DEC COUNT ;ONE LESS STRING LENQ*}GTH0280 RTS FT0240 INY 0250 CPY COUNT ;DONE YET?0260 BNE GT30270 DONE DEC COUNT ;ONE LESS STRING LENP10 ;SOURCE.094 LINE 3020 ;ROTATES COLORS DOWN SCREEN.30 *= $060040 RTCLOK = 18 ;INCREMENTS BY ONE EVERY 4.27U,} SECONDS50 COLPF0 = 53270 ;REGISTER 70860 WSYNC = $D40A70 DELAY = $CB ;TIME TO HOLD ON SCREEN80 SIZE = $CC U-} ;WIDTH OF LINE90 PLA 0100 PLA 0110 PLA 0120 STA DELAY ;IN SECONDS0130 PLA 0140 PLA 015U.}0 STA SIZE ;LINE WIDTH, 1 IS WIDEST0160 PLA 0170 PLA ;0,1,2,3,4 FOR COLOR REGISTER ;708-7120180 U/} TAY 0190 LDA #255 ;WILL BE 0 AT GT10200 GT2 LDX #00210 STX RTCLOK+2 ;1/60 COUNTER0220 LDX #600230 GT1 CLU0}C 0240 ADC SIZE0250 STA WSYNC0260 STA COLPF0,Y0270 CPX RTCLOK+20280 BCS GT10290 DEC DELAY0300 U1} BNE GT20310 RTS STA WSYNC0260 STA COLPF0,Y0270 CPX RTCLOK+20280 BCS GT10290 DEC DELAY0300 T10 ; SOURCEA.094 LINE 7020 ;ROTATES COLORS DOWN SCREEN, COLOR BAR DENSITY OPPOSITE THAT OF SOURCE.094.30 *Y3}= $060040 RTCLOK = 18 ;INCREMENTS BY ONE EVERY 4.27 SECONDS50 COLPF0 = 53270 ;REGISTER 70860 WSYNC = $D40A70 Y4}DELAY = $CB ;TIME TO HOLD ON SCREEN80 SIZE = $CC ;WIDTH OF LINE90 PLA 0100 PLA 0110 PLA 0120 Y5} STA DELAY ;IN SECONDS0130 PLA 0140 PLA 0150 STA SIZE ;LINE WIDTH, 1 IS WIDEST0160 PLA 0170 Y6}PLA ;0,1,2,3,4 FOR COLOR REGISTER ;708-7120180 TAY 0190 LDA #1 ;WILL BE 0 AT GT10200 GT2 LDX #00210 Y7} STX RTCLOK+2 ;1/60 COUNTER0220 LDX #600230 GT1 SEC 0240 SBC SIZE0250 STA WSYNC0260 STA COLPF0,Y0270Y8} CPX RTCLOK+20280 BCS GT10290 DEC DELAY0300 BNE GT20310 RTS STA WSYNC0260 STA COLPF0,Y0270XU10 ; SOURCE.09520 ;ROTATES COLORS IN RANDOM FASHION.30 *= $060040 RTCLOK = 18 ;INCREMENTS BY ONE EVERY 4.27 S]:}ECONDS50 COLPF0 = 53270 ;REGISTER 70860 WSYNC = $D40A70 DELAY = $CB ;TIME TO HOLD ON SCREEN80 RANDOM = 53770];}90 PLA 0100 PLA 0110 PLA 0120 STA DELAY ;IN SECONDS0130 PLA 0140 PLA ;0,1,2,3,4 FOR ]<}COLOR REGISTER ;708-7120150 TAY 0160 LDX #600170 GT2 LDA #00180 STA RTCLOK+2 ;1/60 COUNTER0190 GT1 LDA RANDO]=}M0200 STA WSYNC0210 STA COLPF0,Y0220 CPX RTCLOK+20230 BCS GT10240 DEC DELAY0250 BNE GT20260 ]>} RTS STA WSYNC0210 STA COLPF0,Y0220 CPX RTCLOK+20230 BCS GT10240 DEC DELAY0250 BNE GT20260 \10 ; SOURCE.096 LINE 3020 ;DETERMINES IF A NUMBER IS LESS THAN, GREATER, OR EQUAL TO ANOTHER. MAX. SIZE OF NUMBERS ISa@} 255.30 *= $060040 PLA 50 LDA #260 STA $D470 LDA #080 STA $D590 PLA 0100 aA} PLA 0110 TAY 0120 PLA 0130 PLA 0140 STA $CB0150 CPY $CB0160 BEQ GT10170 BCS GT20180 aB} DEC $D40190 GT1 RTS 0200 GT2 INC $D40210 RTS STA $CB0150 CPY $CB0160 BEQ GT10170 BCS GT20180 `710 ; SOURCEA.096 LINE 8020 ;DETERMINES IF A NUMBER IS LESS THAN, GREATER, OR EQUAL TO ANOTHER, FOR NUMBERS UP TO 65535.3eD}0 *= $060040 PLA 50 LDA #260 STA $D470 LDA #080 STA $D590 PLA 0100 TAX eE}0110 PLA 0120 TAY 0130 PLA 0140 STA $CB0150 PLA 0160 STA $CC0170 CPX $CB0180 BEQ GT1eF}0190 BCS GT20200 GT4 DEC $D40210 RTS 0220 GT2 INC $D40230 GT3 RTS 0240 GT1 CPY $CC0250 BEQ GT30260 BCSeG} GT20270 BCC GT4GT4 DEC $D40210 RTS 0220 GT2 INC $D40230 GT3 RTS 0240 GT1 CPY $CC0250 BEQ GT30260 BCSd10 ; SOURCE.09720 ;BLINK CURSOR AND ANY INVERSE CHARACTER.30 *= $060040 SETVBV = $E45C50 SYSVBV = $E45F60 CHACTiI} = 755 ;CHARACTER MODE REGISTER70 PLA 80 PLA 90 TAX 0100 PLA 0110 CLC 0120 ADC #17 iJ} ;VB ROUTINE 17 BYTES INTO THIS STRING0130 TAY 0140 BCC GT10150 INX 0160 GT1 LDA #6 ;IMMEDIATE MODE0iK}170 JSR $E45C0180 RTS 0190 LDA $140200 ROR CHACT0210 ROR CHACT0220 ROR A0230 ROR A0240 iL} ROR A0250 ROR A0260 ROL CHACT0270 ROL CHACT0280 JMP SYSVBV CHACT0220 ROR A0230 ROR A0240 hP10 ; SOURCE.09820 ;RETURNS LO BYTE IN RETURN VARIABLE AND HI IN PEEK(208)30 *= $060040 PLA 50 PLA 60 mN} STA 20870 PLA 80 STA 21290 LDA #00100 STA 2130110 RTS 040 PLA 50 PLA 60 l\10 ;SOURCE.09920 ;PEEKS A 2 BYTE LOW/HIGH VALUE AND RETURNS THE ADDRESS IN THE RETURN VARIABLE.30 *= $060040 MEM qP}= $CB50 ADDRESS = $D4 ;ANSWER IN RETURN VARIABLE60 PLA 70 PLA 80 PLA 90 STA MEM ;LO OFqQ} 2 BYTE MEMORY TO PEEK0100 LDY #00110 STY MEM+10120 LDA (MEM),Y ;VALUE OF PEEK(LO)0130 STA ADDRESS0140 qR} INY 0150 LDA (MEM),Y0160 STA ADDRESS+10170 RTS LDA (MEM),Y ;VALUE OF PEEK(LO)0130 STA ADDRESS0140 pB10 ; SOURCE.10020 ;POKES AN ADDRESS INTO A 2 BYTE ADDRESS.30 *= $060040 MEM = $CB50 PLA 60 PLA 7uT}0 STA MEM+1 ;WILL BE '0' SINCE THIS ROUTINE ONLY FOR PAGE ZERO80 PLA 90 STA MEM ;MEMORY LO BYTE010uU}0 LDY #1 ;HI BYTE OF MEMORY DESIRED0110 PLA 0120 STA (MEM),Y0130 DEY 0140 PLA 0150 STA (MEMuV}),Y ;LO BYTE0160 RTS OF MEMORY DESIRED0110 PLA 0120 STA (MEM),Y0130 DEY 0140 PLA 0150 STA (MEMt10 ;SOURCE.101 LINE 1020 ;START THE TIMER.30 *= $060040 RTCLOK = 1950 PLA 60 LDA #070 STA RTyX}CLOK+180 STA RTCLOK90 LOOP LDA RTCLOK0100 BNE LOOP0110 RTS 50 PLA 60 LDA #070 STA RTxO10 ;SOURCEA.10120 ;TIMER OFF.30 *= $060040 RTCLOK = 1950 JIFFY = $D460 PLA 70 LDA RTCLOK+180 }Z} STA JIFFY90 LDA RTCLOK0100 STA JIFFY+10110 RTS JIFFY = $D460 PLA 70 LDA RTCLOK+180 |D10 ; SOURCE.10220 ;DELAY LOOP. TAKES UP TO 255 INPUTED NUMBER.30 *= $060040 RTCLOK = 2050 COUNT = $CB60 \} PLA 70 PLA 80 PLA 90 STA COUNT0100 LDA #00110 STA RTCLOK ;SET INTERNAL CLOCK0120 LOOP ]}LDA RTCLOK0130 BNE LOOP ;SETS TO 0 AT VBI0140 LOOP1 LDA RTCLOK0150 CMP COUNT0160 BNE LOOP10170 RTS |10 ;SOURCE.103 LINE 1020 ;DISABLES THE BREAK KEY30 *= $060040 PLA 50 LDA #11260 STA 1670 _} STA 5377480 RTS ;DISABLES THE BREAK KEY30 *= $060040 PLA 50 LDA #11260 STA 1670 10 ; SOURCEA.10320 ;ABLES THE BREAK KEY30 *= $060040 PLA 50 LDA #19260 STA 1670 LDA #247a}80 STA 5377490 RTS AK KEY30 *= $060040 PLA 50 LDA #19260 STA 1670 LDA #247"10 ;SOURCE.10420 ;TURNS SOUND OFF IN ALL FOUR CHANNELS.30 *= $060040 AUDF1 = 5376050 PLA 60 LDY #8c}70 LDA #080 LOOP STA 53760,Y ;SOUND CHANNELS90 DEY 0100 BPL LOOP0110 RTS PLA 60 LDY #8c10 ; SOURCE.105 LINE 30 OR 6020 ;CODES OR DECODES A STRING OF 255 MAX LENGTH.30 *= $060040 ADRS = $CB50 LEN e} = $CD60 CODE = $CF70 PLA 80 PLA 90 STA ADRS+10100 PLA 0110 STA ADRS ;STRING ADDRESSf}0120 PLA 0130 PLA 0140 STA LEN0150 PLA 0160 PLA 0170 STA CODE ;SEED NUMBER TO DECODE WITH018g}0 LDY #00190 LDX LEN ;PARTIAL PAGE0200 BEQ DONE ;NO LENGTH0210 GT1 LDA (ADRS),Y0220 EOR CODE0230 q}?B@SOURCE 049B/DSOURCE 048BsSOURCE 045BSOURCE 046BSOURCE 047'r1B1  ~ Q   $  b ~ B!SOURCEA 091B SOURCE 092B SOURCEA 092BSOURCE 093B "SOURCEA SRCB+SOURCE 094B2SOURCEA 094B9SOURCE 095B?SOURCE 096BCSOURCEA 096BHSOURCE 097BMSOURCE 098BOSOURCE 099BSSOURCE 100BWSOURCE 101BYSOURCEA 101B[SOURCE 102B^SOURCE 103B`SOURCEA 103BbSOURCE 104BdSOURCE 105BrSOURCEA 105BySOURCE 106B~SOURCE 107B SOURCEA 107BSOURCE 108B SOURCEA 108B SOURCE 109BSOURCE 110BSOURCE 111BSOURCE 112BSOURCE 113BSOURCE 114BSOURCE 115BSOURCE 116BSOURCE 117BSOURCE 118BSOURCE 119BSOURCE 120B%DOS SYSB*DUP SYSBmDEMO SRC STA (ADRS),Y0240 INY 0250 DEX 0260 BNE GT10270 DONE RTS TH0210 GT1 LDA (ADRS),Y0220 EOR CODE0230 M10 ;SOURCEA.105 LINE 11020 ;CODES OR DECODES A STRING, ANY LENGTH.30 *= $060040 ADRS = $CB50 LEN = $CD60s} CODE = $CF70 PLA 80 PLA 90 STA ADRS+10100 PLA 0110 STA ADRS ;STRING ADDRESS0120 PLt}A 0130 STA LEN+10140 PLA 0150 STA LEN0160 PLA 0170 PLA 0180 STA CODE ;SEED NUMBER TO DECODE u}WITH0190 LDY #00200 LDX LEN+1 ;DO FULL PAGES FIRST0210 BEQ GT20220 GT3 LDA (ADRS),Y ;GET CHARACTER0230 v} EOR CODE ;EXCLUSIVE 'OR' FOR DECODE0240 STA (ADRS),Y ;REPLACE IT0250 INY 0260 BNE GT30270 INC ADRS+1w}0280 DEX 0290 BNE GT30300 GT2 LDX LEN ;DO PARTIAL PAGE0310 BEQ DONE0320 GT4 LDA (ADRS),Y0330 EOR CODx}E0340 STA (ADRS),Y0350 INY 0360 DEX 0370 BNE GT40380 DONE RTS NE0320 GT4 LDA (ADRS),Y0330 EOR CODT10 ; SOURCE.10620 ;DECIMAL TO BINARY CONVERSION30 *= $060040 STGADR = $CB ;OUTPUT FOR BINARY NUMBER50 NUM =z} $CD ;WORKING NUMBER60 PLA 70 PLA 80 PLA 90 STA NUM ;DECIMAL TO CONVERT0100 PLA 0{}110 STA STGADR+10120 PLA 0130 STA STGADR ;OUTPUT STRING ADDRESS0140 LDY #70150 LOOP LSR NUM ;PUT LOWE|}ST BIT INTO CARRY0160 BCS ONE ;'1'0170 LDA #480180 BNE ZERO0190 ONE LDA #490200 ZERO STA (STGADR),Y0210}} DEY 0220 BPL LOOP0230 RTS '0170 LDA #480180 BNE ZERO0190 ONE LDA #490200 ZERO STA (STGADR),Y0210*10 ; SOURCE.107 LINE 4020 ;DECIMAL TO HEX CONVERSION, 255 MAX30 *= $060040 HEXADR = $CB ;OUTPUT FOR HEX NUMB}ER. STRING MUST BE SET IN BASIC AS "$ ".50 NUM = $CD ;WORKING NUMBER60 TEMP = $CE70 PLA 80 PLA }90 PLA 0100 STA NUM ;DECIMAL TO CONVERT0110 PLA 0120 STA HEXADR+10130 PLA 0140 STA HEXADR } ;OUTPUT STRING ADDRESS0150 LDA #2 ;LOCATION WITHIN OUTPUT STRING0160 STA TEMP0170 LDA NUM0180 AND #}OP E]EEEr 0220 ADC #55 ;10 BECOMES 65 OR 'A' IN ATASCII0230 BCC GT30240 GT2 CLC 0250 ADC #48 ;TO ATASCII0260 }GT3 LDY TEMP0270 STA (HEXADR),Y ;ANSWER STRING0280 DEC TEMP0290 BEQ DONE0300 LDA NUM0310 LSR A0320 } LSR A0330 LSR A ;PUT HI NIBBLE TO LO NIBBLE0340 LSR A0350 CLC 0360 BCC GT10370 DONE RTS 0320 x10 ; SOURCEA.107 LINE 8020 ;DECIMAL TO HEX CONVERSION UP TO 65535.30 *= $060040 HEXADR = $CB ;OUTPUT FOR HEX} NUMBER. STRING MUST BE SET IN BASIC AS "$XXXX".50 NUM = $CD ;WORKING NUMBER60 TEMP = $CF70 PLA 80 } PLA 85 STA NUM+190 PLA 0100 STA NUM ;DECIMAL TO CONVERT0110 PLA 0120 STA HEXADR+10130 } PLA 0140 STA HEXADR ;OUTPUT STRING ADDRESS0150 LDX #2 ;COUNTER0160 LDA #40170 GT4 STA TEMP ;LOCATIO}N WITHIN OUTPUT STRING. START AT END OF HEX STRING0180 LDA NUM0190 AND #15 ;CLEAR HI NIBBLE AND WORK ON LOW NI}BBLE0200 GT1 CMP #10 ;IN CASE NEED A-F CHARACTER0210 BCC GT20220 CLC 0230 ADC #55 ;10 BECOMES 65 OR '}A' IN ATASCII0240 BCC GT30250 GT2 CLC 0260 ADC #48 ;TO ATASCII0270 GT3 LDY TEMP0280 STA (HEXADR),Y ;ANSW}ER STRING0290 DEC TEMP0300 DEX 0310 BEQ NEXT0320 LDA NUM0330 LSR A0340 LSR A0350 LSR A } ;PUT HI NIBBLE TO LO NIBBLE0360 LSR A0370 CLC 0380 BCC GT10390 NEXT LDA TEMP0400 BEQ DONE0410 LD}A NUM+10420 STA NUM ;WORK ON HI BYTE0430 LDA #20440 TAX 0450 BNE GT40460 DONE RTS DONE0410 LDl10 ; SOURCE.108 LINE 3020 ;HEX TO DECIMAL CONVERSION, MAX. HEX NUMBER IS $FF.30 *= $060040 HEXADR = $CB50 NUM} = $D4 ;WORK AREA AND FINAL ANSWER60 PLA 70 PLA 80 STA HEXADR+190 PLA 0100 STA HEXAD}R ;ADDRESS OF INPUTED HEX NUMBER0110 LDA #00120 STA NUM+10130 STA NUM0140 LDX #2 ;A COUNTER FOR NIB}BLES CONVERTED0150 LDY #0 ;2 BYTES IN HEX STRING0160 LOOP LDA (HEXADR),Y0170 CMP #65 ;'A' IN ATASCII0180} BCC GT1 ;48 TO 57 FOR 0-90190 SBC #55 ;'A' BECOMES 10,ECT0200 BCS GT20205 GT1 SEC 0210 SBC #48 } ;TO ARRIVE AT 0-90220 GT2 ORA NUM0230 STA NUM0240 INY 0250 DEX 0260 BEQ DONE ;BOTH NIBBLES DONE02}70 ASL NUM0280 ASL NUM0290 ASL NUM0300 ASL NUM ;PLACE IN HI BYTE0310 CLC 0320 BCC LOOP0330 }DONE RTS NUM0280 ASL NUM0290 ASL NUM0300 ASL NUM ;PLACE IN HI BYTE0310 CLC 0320 BCC LOOP0330 10 ; SOURCEA.108 LINE 7020 ;HEX TO DECIMAL CONVERSION, MAX. HEX NUMBER IS $FFFF.30 *= $060040 HEXADR = $CB50 NU}M = $D4 ;WORK AREA AND FINAL ANSWER60 TEMP = $CD NAL ANSWER70 PLA 80 PLA 90 STA HEXADR+1}ɛ ĢɛК  ܩ8IȢ z Щ $P) 8孨客 $ L` L`DX #2 ;COUNTER FOR BOTH NIBBLES0140 LDA #00150 STA TEMP0160 LOOP LDA (HEXADR),Y0170 CMP #65 ;'A' IN }ATASCII0180 BCC GT1 ;48 TO 57 FOR 0-90190 SBC #55 ;'A' BECOMES 10,ECT0200 BCS GT20205 GT1 SEC 0210 } SBC #48 ;TO ARRIVE AT 0-90220 GT2 ORA TEMP0230 STA TEMP0240 DEX 0250 BEQ NEXT ;NEXT TWO BYTES0260 } INY 0270 ASL TEMP0280 ASL TEMP0290 ASL TEMP0300 ASL TEMP ;PLACE IN HI BYTE0310 CLC 0320 }BCC LOOP0330 NEXT CPY #1 ;FIRST TIME Y IS 30340 BEQ DONE0350 STA NUM0360 LDY #0 ;FIRST HEX CHARACTER}0370 BEQ GT00380 DONE STA NUM+1 ;HI BYTE0390 RTS DONE0350 STA NUM0360 LDY #0 ;FIRST HEX CHARACTER>ei8`Ū߱08§REŧDATINPUԷCOLO,LISENTEҺLEԎI̦FONEXԷGOTϷGO TϷGOSU·TRAиBYŸCONY ;INCOMING HEX NUMBER50 NUM = $D4 ;WORK AREA60 BINADR = $CD ;WHERE TO PUT FINAL BINARY NUMBER IN STRING FORM7}0 PLA 80 PLA 90 STA HEXADR+10100 PLA 0110 STA HEXADR ;ADDRESS OF INPUTED HEX NUMBER0120 L}DA #00130 STA NUM+10140 STA NUM0150 LDX #2 ;A COUNTER FOR NIBBLES CONVERTED0160 LDY #0 ;2 BYTES} IN HEX STRING0170 LOOP LDA (HEXADR),Y0180 CMP #65 ;'A' IN ATASCII0190 BCC GT1 ;48 TO 57 FOR 0-90200 }SBC #55 ;'A' BECOMES 10,ECT0210 BCS GT20220 GT1 SEC 0230 SBC #48 ;TO ARRIVE AT 0-90240 GT2 ORA NUM0250 } STA NUM0260 INY 0270 DEX 0280 BEQ NEXT ;BOTH NIBBLES DONE0290 ASL NUM0300 ASL NUM0310 ASL} NUM0320 ASL NUM ;PLACE IN HI BYTE0330 CLC 0340 BCC LOOP0350 ;NEXT ROUTINES CONVERT DECIMAL TO BINARY NUM}BER STRING0360 NEXT PLA 0370 STA BINADR+1 ;GET LOCATION OF BINARY ADDRESS0380 PLA 0390 STA BINADR0400 LD}Y #70410 LOOP1 LSR NUM0420 BCS ONE0430 LDA #48 ;ZERO0440 BNE ZERO0450 ONE LDA #490460 ZERO STA (BINADR)},Y0470 DEY 0480 BPL LOOP10490 RTS LDA #48 ;ZERO0440 BNE ZERO0450 ONE LDA #490460 ZERO STA (BINADR)210 ; SOURCE.11020 ;BINARY CONVERSION TO DECIMAL30 *= $060040 BINADR = $CB ;INPUT BINARY NUMBER FROM A STRING5}0 NUM = $D4 ; BINARY STRING TO BINARY NUMBER60 TEMP = $D070 PLA 80 LDA #190 STA TEMP ;FI}RST USE A TEMPORARY NUMBER TO BUILD THE BINARY NUMBER OUT OF0100 PLA 0110 STA BINADR+10120 PLA 0130 STA B}INADR0140 LDA #00150 STA NUM+1 ;CLEAR HI BYTE0160 STA NUM ;ANSWER0170 LDY #7 ;8 BITS0180 LOOP} LDA (BINADR),Y ;GET ONE OF THE BINARY STRING CHARACTERS0190 CMP #48 ;'0' IN ATASCII0200 BEQ SKIP0210 LDA }TEMP0220 CLC 0230 ADC NUM0240 STA NUM ;BINARY NUMBER BEING BUILT0250 SKIP ASL TEMP ;PLACE THE '1' IN TH}E APPROPRIATE BIT LOCATION0260 DEY 0270 BPL LOOP0280 RTS EING BUILT0250 SKIP ASL TEMP ;PLACE THE '1' IN THI10 ;SOURCE.11120 ;BINARY CONVERSION TO HEX30 *= $060040 BINADR = $CB ;INPUT BINARY NUMBER FROM A STRING50 HEX}ADR = $CD ;STRING TO PUT HEX ANSWER, MUST BE A LENGTH OF THREE60 NUM = $D4 ;BINARY NUMBER WILL ALSO BE CONVERTE}D TO DECIMAL IN THE RETURN VARIABLE70 TEMP = $D080 PLA 90 LDA #10100 STA TEMP ;FIRST USE A TEMPORAR}Y NUMBER TO BUILD THE BINARY NUMBER OUT OF0110 PLA 0120 STA BINADR+10130 PLA 0140 STA BINADR0150 PLA} 0160 STA HEXADR+10170 PLA 0180 STA HEXADR ;ANSWER0190 LDA #00200 STA NUM+1 ;CLEAR HI BYTE0210 } STA NUM ;BINARY NUMBER FROM STRING TO BINARY NUM0220 LDY #7 ;8 BITS0230 LOOP LDA (BINADR),Y ;GET ONE OF THE} BINARY STRING CHARACTERS0240 CMP #48 ;'0' IN ATASCII0250 BEQ SKIP0260 LDA TEMP0270 CLC 0280 ADC} NUM0290 STA NUM ;BINARY NUMBER BEING BUILT0300 SKIP ASL TEMP ;PLACE THE '1' IN THE APPROPRIATE BIT LOCATION0310} DEY 0320 BPL LOOP0330 ;NOW MAKE THE HEX NUMBER FROM THE TWO NIBBLES OF THE BINARY NUMBER IN 'NUM'0340 LDA #2}0350 STA TEMP ;NOW USE AS STRING LOCATION FOR ANSWER WHICH IS IN THE FORM OF HEX '$XX'0360 LDA NUM0370 AND #}Յ ૥Ԡ``  ͫդԅ`H 󥋅 h / - - - -I&00400 CLC 0410 ADC #55 ;10 BECOMES 65 OR 'A' IN ATASCII0420 BCC GT70430 GT5 CLC 0440 ADC #48 ;TO }ATASCII0450 GT7 LDY TEMP0460 STA (HEXADR),Y ;ANSWER STRING0470 DEC TEMP0480 BEQ DONE0490 LDA NUM0500 } LSR A0510 LSR A0520 LSR A0530 LSR A ;PUT HI NIBBLE TO LO NIBBLE0540 CLC 0550 BCC GT60560 DO}NE RTS 0510 LSR A0520 LSR A0530 LSR A ;PUT HI NIBBLE TO LO NIBBLE0540 CLC 0550 BCC GT60560 DO10 ; SOURCE.11220 ;FLIPS BIT STATUS OF NUMBER IN A MEMORY ADDRESS.30 *= $060040 LOC = $CB50 PLA 60 } PLA 70 STA LOC+180 PLA 90 STA LOC ;LOCATION OF BYTE TO CHANGE0100 PLA 0110 PLA 0120 }6 Eƨ إ󅕥 gL a" a Ư" L8 > c=Š) 죰 L樤ħ`hh` >L DEX 0180 BPL LOOP ;PUT A '0' IN CORRECT LOCATION FOR NUMBER TO 'EOR' MEMORY LOCATION WITH0190 EOR (LOC),Y ;N}EW NUMBER0200 STA (LOC),Y ;REPLACE OLD NUMBER0210 RTS NUMBER TO 'EOR' MEMORY LOCATION WITH0190 EOR (LOC),Y ;NA10 ;SOURCE.11320 ;FLIPS BIT STATUS OF DIRECT INPUT NUMBER.30 *= $060040 NUM = $D450 PLA 60 PLA }70 PLA 80 STA NUM ;NUMBER90 PLA 0100 PLA 0110 TAX ;BIT TO FLIP, 0-70120 LDA #0}0130 STA NUM+1 ;CLEAR HI BYTE0140 SEC ;PUT A '1' IN CARRY0150 LOOP ROL A0160 DEX 0170 BPL LOOP} ;PUT A '1' IN CORRECT LOCATION FOR NUMBER TO 'EOR' MEMORY LOCATION WITH0180 EOR NUM ;NEW NUMBER0190 STA NUM} ;REPLACE OLD NUMBER0200 RTS NUMBER TO 'EOR' MEMORY LOCATION WITH0180 EOR NUM ;NEW NUMBER0190 STA NUM'10 ; SOURCE.11420 ;SET BIT TO 1 OF NUMBER IN A MEMORY ADDRESS.30 *= $060040 LOC = $CB50 PLA 60 PL}A 70 STA LOC+180 PLA 90 STA LOC ;LOCATION OF BYTE TO CHANGE0100 PLA 0110 PLA 0120 TAX} ;BIT TO SET, 0-70130 LDA #00140 TAY 0150 SEC ;PUT A '1' IN CARRY0160 LOOP ROL A0170 DEX} 0180 BPL LOOP ;PUT A '1' IN CORRECT LOCATION FOR NUMBER TO 'ORA' MEMORY LOCATION WITH0190 ORA (LOC),Y ;NEW NUMB}ER0200 STA (LOC),Y ;REPLACE OLD NUMBER0210 RTS NUMBER TO 'ORA' MEMORY LOCATION WITH0190 ORA (LOC),Y ;NEW NUMB:10 ; SOURCE.11520 ;SETS BIT TO 1, DIRECT NUMBER INPUT30 *= $060040 NUM = $D450 PLA 60 PLA 70 } PLA 80 STA NUM ;NUMBER90 PLA 0100 PLA 0110 TAX ;BIT TO SET, 0-70120 LDA #00130 } STA NUM+10140 SEC ;PUT A '1' IN CARRY0150 LOOP ROL A0160 DEX 0170 BPL LOOP ;PUT A '1' IN CORREC}T LOCATION FOR NUMBER TO 'ORA' MEMORY LOCATION WITH0180 ORA NUM ;NEW NUMBER0190 STA NUM ;REPLACE OLD NUMBER}0200 RTS NUMBER TO 'ORA' MEMORY LOCATION WITH0180 ORA NUM ;NEW NUMBER0190 STA NUM ;REPLACE OLD NUMBER10 ; SOURCE.11620 ;CLEARS A BIT OF A NUMBER IN MEMORY30 *= $060040 LOC = $CB50 PLA 60 PLA 70 } STA LOC+180 PLA 90 STA LOC ;LOCATION OF BYTE TO CHANGE0100 PLA 0110 PLA 0120 TAX };BIT TO CLEAR, 0-70130 LDY #00140 LDA #255 ;111111110150 CLC ;PUT A '0' IN CARRY0160 LOOP ROL A01}70 DEX 0180 BPL LOOP ;PUT A '0' IN CORRECT LOCATION FOR NUMBER TO 'AND' MEMORY LOCATION WITH0190 AND (LOC),Y} ;NEW NUMBER0200 STA (LOC),Y ;REPLACE OLD NUMBER0210 RTS NUMBER TO 'AND' MEMORY LOCATION WITH0190 AND (LOC),YD10 ; SOURCE.11720 ;CLEARS A BIT OF DIRECT INPUT NUMBER.30 *= $060040 NUM = $D450 PLA 60 PLA 70 } PLA 80 STA NUM ;NUMBER90 PLA 0100 PLA 0110 TAX ;BIT TO CLEAR, 0-70120 LDA #001}30 STA NUM+1 ;CLEAR HI BYTE0140 LDA #255 ;111111110150 CLC ;PUT A '0' IN CARRY0160 LOOP ROL A017}0 DEX 0180 BPL LOOP ;PUT A '0' IN CORRECT LOCATION FOR NUMBER TO 'AND' MEMORY LOCATION WITH0190 AND NUM };NEW NUMBER0200 STA NUM ;REPLACE OLD NUMBER0210 RTS NUMBER TO 'AND' MEMORY LOCATION WITH0190 AND NUM C10 ; SOURCE.11820 ;READS STATUS OF A BIT OF A NUMBER IN MEMORY.30 *= $060040 LOC = $CB50 RETVAR = $D460 } PLA 70 PLA 80 STA LOC+190 PLA 0100 STA LOC ;LOCATION OF BYTE TO CHANGE0110 PLA 0120 } PLA 0130 TAX ;BIT TO READ, 0-70140 LDY #00150 STY RETVAR+10160 LDA (LOC),Y ;GET NUMBER0170 LOOP} DEX 0180 BMI DONE0190 ROR A ;GET DESIRED BIT INTO '0' LOCATION0200 CLC 0210 BCC LOOP0220 DONE AND} #1 ;CLEAR ALL BITS EXCEPT FIRST ONE0230 STA RETVAR0240 RTS TION0200 CLC 0210 BCC LOOP0220 DONE ANDK10 ; SOURCE.11920 ;READS STATUS OF A BIT OF A DIRECT INPUT NUMBER.30 *= $060040 NUM = $D450 PLA 60 } PLA 70 PLA 80 STA NUM ;NUMBER90 PLA 0100 PLA 0110 TAX ;BIT TO READ, 0-70120 } LDY #00130 STY NUM+10140 LDA NUM0150 LOOP DEX 0160 BMI DONE0170 ROR A ;GET DESIRED BIT INTO '0' L}OCATION0180 CLC 0190 BCC LOOP0200 DONE AND #1 ;CLEAR ALL BITS EXCEPT FIRST ONE0210 STA NUM0220 RTS }10 ; SOURCE.12020 ;PLACES GR.0 SIZE TEXT ON GR.8 PICTURE SCREEN.30 *= $060040 CHBAS = 75650 SCN = $CB6}0 CHAR = $CD70 HOLD = $CF80 PLA 90 CLC 0100 PLA ;HI OF 0 TO 7680 FOR PLACE ON SCREEN0110 } ADC 89 ;HI OF SCN ADDRESS0120 STA SCN+10130 CLC 0140 PLA ;LO ON PLACE ON SCREEN0150 ADC 8}8 ;LO OF SCN ADDRESS0160 STA SCN0170 LDA SCN+10180 ADC #00190 STA SCN+1 ;FIX HI BYTE IF NECESSARY}0200 LDA CHBAS0210 STA CHAR+1 ;PUT HI BYTE OF CHBAS IN CHAR+10220 PLA 0230 PLA ;0-255 ATASCII NUM}BER OF KEYBOARD INPUT0240 BPL GT4 ;IF 0-1270250 LDX #1 ; 128 TO 255 WHICH IS INVERSE CHARACTER SO SET X AS} FLAG0260 SEC 0270 SBC #128 ;TO 0-1270280 GT4 STA CHAR ;0 TO 127 ATASCII NUMBER0290 AND #224 ;111000}000300 BNE GT1 ;IF WAS >310310 LDA CHAR0320 CLC 0330 ADC #64 ;NO. WAS 0-32 SO CORRECT TO DISPLAY }NO.0340 BNE G00350 GT1 LDA CHAR ;>310360 AND #96 ;011000000370 CMP #960380 BEQ G3 ;IF WAS >9}50390 LDA CHAR ;NO. WAS 32-95 SO CORRECT TO DISPLAY NO.0400 SEC 0410 SBC #320420 G0 STA CHAR ;CORRECT }DISPLAY NO.. IF INVERSE THEN X=10430 G3 LDA CHAR0440 CLC 0450 ASL A0460 ASL A0470 BCS G20480 GT8 ASL A} ;NOW IS x8 OR WHERE CHAR STARTS IN CHBAS0490 BCS GT90500 G1 STA CHAR0510 LDY #00520 GT6 LDA (CHAR),Y ;FIR}ST LINE OF CHARACTER IN CHBAS0530 INY ;1,2,3...80540 STY HOLD0550 CPX #10560 BEQ GT5 ;IF INVE} } LINE OF CHARACTER0600 CLC 0610 ADC #400620 STA SCN0630 LDA SCN+10640 ADC #00650 STA SCN+10660} LDY HOLD0670 CPY #80680 BNE GT60690 RTS 0700 GT5 EOR #2550710 CLC 0720 BCC GT70730 G2 INC CH}AR+10740 INC CHAR+10750 CLC 0760 BCC GT80770 GT9 INC CHAR+10780 CLC 0790 BCC G1GT70730 G2 INC CHjd M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ`}$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF}7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L}EE !E^ ^ E E7EȩEdE/EȩE  D} .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `1  ɐ     `TU } L ? .  t`GBJ ~DEHI B V0dV}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh}DEL8HI4 0 HI,0 0  9 .G VLO},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHI} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO }STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG }E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES!}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N'"}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx #}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT$} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL%}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD&}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.'}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC(}COPY--FROM, TO?OPTION NOT ALLOWED697 FREE SECTORS COPYING---D8:COPY32.COMl# 0|D .L/%#)}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY*}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E +}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A,}LLOWED IN DESTINATION 0 <.|K},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭ?}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DO@}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξA}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE B}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!C}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥD}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEE} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LF}!ERROR- 144ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAG}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uH} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8u HEXADECIMAL PARAMETER800 0 8 00`,0'D800H,ɛh`2L1NEED D1 THRU D4CJ} $;CC $;C $;CC 8C Z: *DCC ,=  , lɀL +K}CCC.LE4 k:泭C0iiCLg3CL<3 Z: *DCC ,=  , /,C0 8L} l0N S0G :CC# k:浭C0iiCЪL<3 ,٢=  * q;L8 D, q; $; ,WC M} L 4C>  :A>810CC ,/> 1C1>  :Z>810CC ,C> 1CCC , 1= 1 :YhN}hL `=CCЍCCCCCCCCC ; ; ; , 4L3 ,\> 1 * 鈹CɛሢCɛ )CC0O}CC ~* 5CCCC Co> 1 * Cɛ ~* 5ܭCCCC C˭CCLE5CCLE5`C`P}`C`~, , E5C 4L3? , E5CC 4C $;D浭CC 8CCCBCQ} lɀYC :L6 : lC񠀈Ѱиi iACCC k:LX6CCCCC qR};L8= ; , ,p  , ,  ,1@  :ɛL 15))C q+L 7= , ,V@  ,u@  :ɛL H 7 S}7Lj7 7Lj7D 8 7L7 7L7բ@ `ߢC ` ,@  * ECɛ>0$C *00C0C *0" CCLT}7`C X*`8` ,@  *0\X TCɛM ~*HC)JJJJ *6CȽC) *(CC0CCU}C`8`=8W=Wy 8W=PyL5 ON ,C` ; *nDEǍHI 1C L!9 :C V}q+L8L 9 q;L8P 9 q;L8W +L8ML 15))C g+L8 ,C&D?E BHCCC /,C\W}XCC X*C-?0  -?C0L8:8鉍C mC mCE?1?C V0*CCC LW9C? X}`CL09PC B VB DAEJNK V0 09 ,ʢ? PC D,P B V`CC mC mC?1?L9Y}CC`i`i`i`i`i`P BZ} VBDAEJ VBHIL1HI B} V@`HS S ShH )Lc;Lj;h` 0)¢[})  q; ,` M;hL$; b,hL$; ,>  , ,L,=L1 :HOh:` ; 0L>!}DISK UTILITIES (c)1983 Atari V\}er 2.6f MODIFIED FOR ATARI 800 USEA. DISK DIRECTORY K. BINARY SAVEB. RUN CARTRIDGE L. BINARY LOADC. COPY FILE ]}M. RUN AT ADDRESSD. DELETE FILE N. CREATE MEM.SAVE. RENAME FILE O. DUPLICATE FILEF. LOCK FILE P. COPY SECTORSG^}. UNLOCK FILE Q. CHECK SECTORSH. WRITE DOS/DUP R. RADIX CONVERTI. FORMAT DISK S. DRIVE SPEEDJ. DUPLICATE DISK T. WR_}ITE VERIFY:ƛ9!&x#!7&p))'&5./)L''-66C76u8COPY DISK Insert source disk and Λ Insert DESTINATION `}disk and Λ IT'S DONE !'Y' to execute or for menuSource drive # ?DESTINATION drive # ?Source drive is # 1Desa}tination drive is # 1Enter first sectorEnter last sectorCHECK DRIVE # 1 >>>>ERROR # 138<<<q98 ?C7=Cs;: A9Bt